#include "comm.h"

int main()
{
    // 设置当前进程的文件模式创建屏蔽字，即将屏蔽掉文件权限位中的某些权限
    umask(0);
    // 创建命名管道
    if (mkfifo(IPC_PATH, 0666) != 0)
        errno_exit("mkfifo");

    // 打开管道，获取文件描述符
    int pipefd = open(IPC_PATH, O_RDONLY);
    if (pipefd < 0)
        errno_exit("open");

    // 正常通信过程
    char buffer[NUM];
    ssize_t s;
    while ((s = read(pipefd, buffer, sizeof(buffer) - 1)) > 0)
    {
        // 在读取的数据后加上字符串结束符
        buffer[s] = '\0';
        cout << "client -> server# " << buffer << endl;
    }
    if (s == 0)
        cout << "client exit!" << endl;
    else
        cout << "read:" << strerror(errno) << endl;

    // 关闭文件描述符
    close(pipefd);
    cout << "server exit!" << endl;
    // 删除命名管道
    unlink(IPC_PATH);
    return 0;
}